/********************************************************************************************************
 * @file     Test_case.h 
 *
 * @brief    for TLSR chips
 *
 * @author	 telink
 * @date     Sep. 30, 2010
 *
 * @par      Copyright (c) 2010, Telink Semiconductor (Shanghai) Co., Ltd.
 *           All rights reserved.
 *           
 *			 The information contained herein is confidential and proprietary property of Telink 
 * 		     Semiconductor (Shanghai) Co., Ltd. and is available under the terms 
 *			 of Commercial License Agreement between Telink Semiconductor (Shanghai) 
 *			 Co., Ltd. and the licensee in separate contract or the terms described here-in. 
 *           This heading MUST NOT be removed from this file.
 *
 * 			 Licensees are granted free, non-transferable use of the information in this 
 *			 file under Mutual Non-Disclosure Agreement. NO WARRENTY of ANY KIND is provided. 
 *           
 *******************************************************************************************************/
#pragma once
#include "../../proj/tl_common.h"
#include "../../vendor/common/mesh_node.h"

#define IUT_ADDRESS     0x08e3
#define LT_ADDRESS      0x08d2

#define MASK_HIGH16(val)		(val & 0xFFFF0000)
#define MASK_LOW16(val)			(val & 0x0000FFFF)

typedef enum{
//ADV Provisioning Bearer
	NODE_PBADV_BV_01 = 0x04030100,
	NODE_PBADV_BV_03 = 0x04030300,
	NODE_PBADV_BV_04 = 0x04030400,
	PVNR_PBADV_BV_01 = 0x04030500,
	PVNR_PBADV_BV_02 = 0x04030600,
	PVNR_PBADV_BV_03 = 0x04030700,
	PVNR_PBADV_BI_01 = 0x04030800,
	NODE_PBADV_BI_01 = 0x04030900,
	NODE_PBADV_BI_02 = 0x04030A00,
	NODE_PBADV_BI_03 = 0x04030B00,
	NODE_PBADV_BI_04 = 0x04030C00,
//Mesh Provision Service
    NODE_MPS_BV_01_C = 0x04040100,
    NODE_MPS_BV_02_C = 0x04040200,
    NODE_MPS_BV_03_C = 0x04040300,
    NODE_MPS_BV_04_C = 0x04040401,
    NODE_MPS_BV_05_C = 0x04040402,
    NODE_MPS_BV_06_C = 0x04040500,
    NODE_MPS_BV_07_C = 0x04040600,
    NODE_MPS_BV_08_C = 0x04040700,
    NODE_MPS_BV_09_C = 0x04040800,
    NODE_MPS_BV_10_C = 0x04040900,
    PVNR_MPS_BV_01_C = 0x04040A00,
    PVNR_MPS_BV_02_C = 0x04040B00,
    PVNR_MPS_BV_03_C = 0x04040C01,
    PVNR_MPS_BV_04_C = 0x04040C02,
    PVNR_MPS_BV_05_C = 0x04040D00,
    PVNR_MPS_BV_06_C = 0x04040E00,
    PVNR_MPS_BV_07_C = 0x04040F00,
    PVNR_MPS_BV_08_C = 0x04041000,
    PVNR_MPS_BV_09_C = 0x04041100,
    NODE_MPS_BI_01_C = 0x04041200,
// provisioning procedure part 
	NODE_PROV_UPD_BV_01_C = 0x04050101,
	NODE_PROV_UPD_BV_02_C = 0x04050102,
	NODE_PROV_UPD_BV_03_C = 0x04050103,
	NODE_PROV_UPD_BV_04_C = 0x04050104,
	NODE_PROV_UPD_BV_05_C = 0x04050105,
	NODE_PROV_UPD_BV_06_C = 0x04050106,
	NODE_PROV_UPD_BV_07_C = 0x04050107,
	NODE_PROV_UPD_BV_08_C = 0x04050108,
	NODE_PROV_UPD_BV_12_C = 0x04050500,
//Provisioning PVNR PART
	PVNR_PROV_PVN_BV_01_C = 0x04050501,
	PVNR_PROV_PVN_BV_04_C = 0x04050504,
//Network Layer
	NODE_NET_BV_00 = 0x04070000,
    NODE_NET_BV_01 = 0x04070101,
    NODE_NET_BV_02 = 0x04070102,
    NODE_NET_BV_03 = 0x04070103,
    NODE_NET_BV_04 = 0x04070104,
    NODE_NET_BV_05 = 0x04070105,
    NODE_NET_BV_06 = 0x04070106,
    NODE_NET_BV_07 = 0x04070107,
    NODE_NET_BV_08 = 0x04070201,
    NODE_NET_BV_09 = 0x04070202,
    NODE_NET_BV_10 = 0x04070203,
    NODE_NET_BV_11 = 0x04070204,
    NODE_NET_BV_12 = 0x04070205,
    NODE_NET_BV_13 = 0x04070206,
    NODE_NET_BV_14 = 0x04070207,
    NODE_NET_BI_01 = 0x04070300,
    NODE_NET_BI_02 = 0x04070400,
    NODE_NET_BI_03 = 0x04070500,
    NODE_NET_BI_04 = 0x04070600,
//Message Relaying
    NODE_RLY_BV_01_A = 0x04080101,
    NODE_RLY_BV_01_B = 0x04080102,
    NODE_RLY_BV_01_C = 0x04080103,
    NODE_RLY_BV_01_D = 0x04080104,
    NODE_RLY_BV_01_E = 0x04080105,
    NODE_RLY_BV_01_F = 0x04080106,
    NODE_RLY_BV_01_G = 0x04080107,
    NODE_RLY_BV_01_H = 0x04080108,
    NODE_RLY_BV_01_I = 0x04080109,
    NODE_RLY_BV_01_J = 0x0408010A,
    NODE_RLY_BV_02_A = 0x04080201,
    NODE_RLY_BV_02_B = 0x04080202,
    NODE_RLY_BV_02_C = 0x04080203,
    NODE_RLY_BV_02_D = 0x04080204,
    NODE_RLY_BV_02_E = 0x04080205,
    NODE_RLY_BV_02_F = 0x04080206,
    NODE_RLY_BV_02_G = 0x04080207,
    NODE_RLY_BV_02_H = 0x04080208,
    NODE_RLY_BV_02_I = 0x04080209,
    NODE_RLY_BV_02_J = 0x0408020A,
    NODE_RLY_BI_01_A = 0x04080301,
    NODE_RLY_BI_01_B = 0x04080302,
    NODE_RLY_BI_04_A = 0x04080401,
    NODE_RLY_BI_04_B = 0x04080402,
    NODE_RLY_BI_04_C = 0x04080403,
    NODE_RLY_BI_04_D = 0x04080404,
//Transport Layers  
    NODE_TNPT_BV_01 = 0x04090100,
    NODE_TNPT_BV_02 = 0x04090200,
    NODE_TNPT_BV_03 = 0x04090300,
    NODE_TNPT_BV_04 = 0x04090400,
    NODE_TNPT_BV_05 = 0x04090500,
    NODE_TNPT_BV_06 = 0x04090600,
    NODE_TNPT_BV_07 = 0x04090700,
    NODE_TNPT_BV_08_A = 0x04090801,
    NODE_TNPT_BV_08_B = 0x04090802,
    NODE_TNPT_BV_09 = 0x04090900,
    NODE_TNPT_BV_10 = 0x04090A00,
    NODE_TNPT_BV_11 = 0x04090B00,
    NODE_TNPT_BV_12 = 0x04090C00,
    NODE_TNPT_BV_13 = 0x04090D00,
    NODE_TNPT_BV_14 = 0x04090E00,
    NODE_TNPT_BI_01 = 0x04090F00,
    NODE_TNPT_BI_02 = 0x04091000,
//IV UPDATE
	NODE_IVU_BV_01 	= 0x040A0100,
	NODE_IVU_BV_02 	= 0x040A0200,
	NODE_IVU_BV_03 	= 0x040A0300,
	NODE_IVU_BV_04 	= 0x040A0400,
	NODE_IVU_BV_05 	= 0x040A0500,
	NODE_IVU_BI_01 	= 0x040A0600,
	NODE_IVU_BI_02 	= 0x040A0700,
	NODE_IVU_BI_03 	= 0x040A0800,
	NODE_IVU_BI_04 	= 0x040A0900,
	NODE_IVU_BI_05 	= 0x040A0A00,
	NODE_IVU_BI_06 	= 0x040A0B00,
//Key Refresh
	CFGCL_CFG_KR_PTS_1   = 0x040B0400,
	CFGCL_CFG_KR_PTS_2   = 0x040B0402,
//Node identity
	NODE_CFG_NID_BV_02   = 0x040F0C02,
	NODE_CFG_NID_BI_02   = 0x040F0C05,
	CFGCL_CFG_NID_BV_01  = 0x040F0C07,
//Configuration Model
	CFGC_CFG_RST		 = 0x040F0000,
	CFGCL_CFG_SNBP_BV_01 = 0x040F0103,
	CFGCL_CFG_COMP_BV_01 = 0x040F0202,
	CFGCL_CFG_DTTL_BV_01 = 0x040F0303,
	NODE_CFG_GPXY_BV_01  = 0x040F0401,
	CFGCL_CFG_GPXY_BV_01 = 0x040F0404,
	NODE_CFG_CFGF_BV_01  = 0x040F0501,
	CFGCL_CFG_CFGF_BV_01 = 0x040F0503,
	NODE_CFG_CFGR_BV_01  = 0x040F0601,
	CFGCL_CFG_CFGR_BV_01 = 0x040F0603,
	CFGCL_CFG_MP_BV_01   = 0x040F0706,
	CFGCL_CFG_NTX_BV_01	 = 0x040F1002,	
	CFGCL_CFG_SL_BV_01 	 = 0x040F080E,
	CFGC_CFG_SL_BV_02	 = 0x040F080F,
	NODE_CFG_NKL_BI_03	 = 0x040F0907,
	CFGC_CFG_NKL_BV_01	 = 0x040F0908,
	CFGC_CFG_NKL_BV_02	 = 0x040F0909,
	CFGC_CFG_NKL_BV_03	 = 0x040F090A,
	CFGC_CFG_AKL_BV_01	 = 0x040F0A08,
	CFGC_CFG_AKL_BV_02	 = 0x040F0A09,
	CFGC_CFG_AKL_BV_03	 = 0x040F0A0A,
	CFGC_CFG_AKL_BV_04	 = 0x040F0A0B,
	CFGCL_CFG_MAKL_BV_01 = 0x040F0B07,
	CFGCL_CFG_MAKL_BV_02 = 0x040F0B08,
	CFGC_CFG_MAKL_BV_03	 = 0x040F0B09,
	CFGC_CFG_MAKL_BV_04	 = 0x040F0B0A,
	CFGC_CFG_RST_BV_01	 = 0x040F0D02,
	CFGCL_CFG_HBP_BV_01  = 0x040F0E0A,
	CFGCL_CFG_HBS_BV_01  = 0x040F0F07,	
//LPN poll timeout
	CFGC_CFG_LPNPT_BV_01 = 0x040F1102,
//health model
	SR_HM_CFS_BV_01		 = 0x04100101,
	SR_HM_CFS_BV_02		 = 0x04100102,
	SR_HM_RFS_BV_01		 = 0x04100201,
	SR_HM_RFS_BV_02		 = 0x04100202,
	CL_HM_RFS_BV_01		 = 0x04100206,
	CL_HM_HPS_BV_01		 = 0x04100302,
	CL_HM_ATS_BV_01		 = 0x04100402,	
//generic client models
	//generic onoff client
	CL_GOO_BV_01	= 0x84080101,
	CL_GOO_BV_02	= 0x84080102,
	CL_GOO_BV_03	= 0x84080103,
	CL_GOO_BV_04	= 0x84080104,
	CL_GOO_BV_05	= 0x84080105,
	CL_GOO_BV_06	= 0x84080106,
	CL_GOO_BV_07	= 0x84080107,
	//generic level client
	CL_GLV_BV_01	= 0x84080201,
	CL_GLV_BV_02	= 0x84080202,
	CL_GLV_BV_03	= 0x84080203,
	CL_GLV_BV_04	= 0x84080204,
	CL_GLV_BV_05	= 0x84080205,
	CL_GLV_BV_06	= 0x84080206,
	CL_GLV_BV_07	= 0x84080207,
	CL_GLV_BV_08    = 0x84080208,
	CL_GLV_BV_09    = 0x84080209,
	CL_GLV_BV_10    = 0x8408020A,

	CL_GLV_BV_11    = 0x8408020B,
	CL_GLV_BV_12	= 0x8408020C,
	CL_GLV_BV_13    = 0x8408020D,
	CL_GLV_BV_14    = 0x8408020E,
	CL_GLV_BV_15    = 0x8408020F,
	//generic default transation time cloeent
	CL_GDTT_BV_01	= 0x84080301,
	CL_GDTT_BV_02	= 0x84080302,
	CL_GDTT_BV_03	= 0x84080303,
	//generic power onoff client
	CL_GPOO_BV_01	= 0x84080401,
	CL_GPOO_BV_02	= 0x84080402,
	CL_GPOO_BV_03	= 0x84080403,
	//generic power level client
	CL_GPL_BV_01	= 0x84080501,
	CL_GPL_BV_02	= 0x84080502,
	CL_GPL_BV_03	= 0x84080503,
	CL_GPL_BV_04	= 0x84080504,
	CL_GPL_BV_05	= 0x84080505,
	CL_GPL_BV_06	= 0x84080506,
	CL_GPL_BV_07	= 0x84080507,
	CL_GPL_BV_08	= 0x84080508,
	CL_GPL_BV_09	= 0x84080509,
	CL_GPL_BV_10	= 0x8408050A,
	CL_GPL_BV_11	= 0x8408050B,
	CL_GPL_BV_12	= 0x8408050C,
	CL_GPL_BV_13	= 0x8408050D,
	CL_GPL_BV_14	= 0x8408050E,
	//generic battery client
	CL_GBAT_BV_01  	= 0x84080601,
	//generic location client
	CL_GLOC_BV_01	= 0x84080701,
	CL_GLOC_BV_02	= 0x84080702,
	CL_GLOC_BV_03	= 0x84080703,
	CL_GLOC_BV_04	= 0x84080704,
	CL_GLOC_BV_05	= 0x84080705,
	CL_GLOC_BV_06	= 0x84080706,
	//generic property client
	CL_GPR_BV_01	= 0x84080801,
	CL_GPR_BV_02	= 0x84080802,
	CL_GPR_BV_03	= 0x84080803,
	CL_GPR_BV_04	= 0x84080804,
	CL_GPR_BV_05	= 0x84080805,
	CL_GPR_BV_06	= 0x84080806,
	CL_GPR_BV_07	= 0x84080807,
	CL_GPR_BV_08	= 0x84080808,
	CL_GPR_BV_09	= 0x84080809,
	CL_GPR_BV_10	= 0x8408080A,
	CL_GPR_BV_11	= 0x8408080B,
	CL_GPR_BV_12	= 0x8408080C,
	CL_GPR_BV_13	= 0x8408080D,
//sensor server models
	SR_SNR_BV_07	= 0x84090107,
	SR_SNR_BV_09	= 0x84090109,
//sensor client models
	CL_SNR_BV_01	= 0x840A0101,
	CL_SNR_BV_02	= 0x840A0102,
	CL_SNR_BV_03	= 0x840A0103,
	CL_SNR_BV_04	= 0x840A0104,
	CL_SNR_BV_05	= 0x840A0105,
	CL_SNR_BV_06	= 0x840A0106,
	CL_SNR_BV_07	= 0x840A0107,
	CL_SNR_BV_08	= 0x840A0108,
	CL_SNR_BV_09	= 0x840A0109,
	CL_SNR_BV_10	= 0x840A010A,
	CL_SNR_BV_11	= 0x840A010B,
	CL_SNR_BV_12	= 0x840A010C,
	CL_SNR_BV_13	= 0x840A010D,
//time and scene client models
	//time client
	CL_TIM_BV_01	= 0x840C0101,
	CL_TIM_BV_02	= 0x840C0102,
	CL_TIM_BV_03	= 0x840C0103,
	CL_TIM_BV_04	= 0x840C0104,
	CL_TIM_BV_05	= 0x840C0105,
	CL_TIM_BV_06	= 0x840C0106,
	CL_TIM_BV_07	= 0x840C0107,
	CL_TIM_BV_08	= 0x840C0108,
	//scene client
	CL_SCE_BV_01	= 0x840C0201,
	CL_SCE_BV_02	= 0x840C0202,
	CL_SCE_BV_03	= 0x840C0203,
	CL_SCE_BV_04	= 0x840C0204,
	CL_SCE_BV_05	= 0x840C0205,
	CL_SCE_BV_06	= 0x840C0206,
	CL_SCE_BV_07	= 0x840C0207,
	CL_SCE_BV_08	= 0x840C0208,
	CL_SCE_BV_09	= 0x840C0209,
	CL_SCE_BV_10	= 0x840C020A,
	//scheduler client
	CL_SCH_BV_01	= 0x840C0301,
	CL_SCH_BV_02	= 0x840C0302,
	CL_SCH_BV_03	= 0x840C0303,
	CL_SCH_BV_04	= 0x840C0304,
//lighting client model
	//light lightness client
	CL_LLN_BV_01	= 0x840F0101,
	CL_LLN_BV_02	= 0x840F0102,
	CL_LLN_BV_03	= 0x840F0103,
	CL_LLN_BV_04	= 0x840F0104,
	CL_LLN_BV_05	= 0x840F0105,
	CL_LLN_BV_06	= 0x840F0106,
	CL_LLN_BV_07	= 0x840F0107,
	CL_LLN_BV_08	= 0x840F0108,
	CL_LLN_BV_09	= 0x840F0109,
	CL_LLN_BV_10	= 0x840F010A,
	CL_LLN_BV_11	= 0x840F010B,
	CL_LLN_BV_12	= 0x840F010C,
	CL_LLN_BV_13	= 0x840F010D,
	CL_LLN_BV_14	= 0x840F010E,
	CL_LLN_BV_15	= 0x840F010F,
	CL_LLN_BV_16	= 0x840F0110,
	CL_LLN_BV_17	= 0x840F0111,
	CL_LLN_BV_18	= 0x840F0112,
	CL_LLN_BV_19	= 0x840F0113,
	CL_LLN_BV_20	= 0x840F0114,
	CL_LLN_BV_21	= 0x840F0115,
	//light CTL client
	CL_LCTL_BV_01	= 0x840F0201,
	CL_LCTL_BV_02	= 0x840F0202,
	CL_LCTL_BV_03	= 0x840F0203,
	CL_LCTL_BV_04	= 0x840F0204,
	CL_LCTL_BV_05	= 0x840F0205,
	CL_LCTL_BV_06	= 0x840F0206,
	CL_LCTL_BV_07	= 0x840F0207,
	CL_LCTL_BV_08	= 0x840F0208,
	CL_LCTL_BV_09	= 0x840F0209,
	CL_LCTL_BV_10	= 0x840F020A,
	CL_LCTL_BV_11	= 0x840F020B,
	CL_LCTL_BV_12	= 0x840F020C,
	CL_LCTL_BV_13	= 0x840F020D,
	CL_LCTL_BV_14	= 0x840F020E,
	CL_LCTL_BV_15	= 0x840F020F,
	CL_LCTL_BV_16	= 0x840F0210,
	CL_LCTL_BV_17	= 0x840F0211,
	CL_LCTL_BV_18	= 0x840F0212,
	CL_LCTL_BV_19	= 0x840F0213,
	CL_LCTL_BV_20	= 0x840F0214,	
	//light HSL client
	CL_LHSL_BV_01	= 0x840F0301,
	CL_LHSL_BV_02	= 0x840F0302,
	CL_LHSL_BV_03	= 0x840F0303,
	CL_LHSL_BV_04	= 0x840F0304,
	CL_LHSL_BV_05	= 0x840F0305,
	CL_LHSL_BV_06	= 0x840F0306,
	CL_LHSL_BV_07	= 0x840F0307,
	CL_LHSL_BV_08	= 0x840F0308,
	CL_LHSL_BV_09	= 0x840F0309,
	CL_LHSL_BV_10	= 0x840F030A,
	CL_LHSL_BV_11	= 0x840F030B,
	CL_LHSL_BV_12	= 0x840F030C,
	CL_LHSL_BV_13	= 0x840F030D,
	CL_LHSL_BV_14	= 0x840F030E,
	CL_LHSL_BV_15	= 0x840F030F,
	CL_LHSL_BV_16	= 0x840F0310,
	CL_LHSL_BV_17	= 0x840F0311,
	CL_LHSL_BV_18	= 0x840F0312,
	CL_LHSL_BV_19	= 0x840F0313,
	CL_LHSL_BV_20	= 0x840F0314,
	CL_LHSL_BV_21	= 0x840F0315,
	CL_LHSL_BV_22	= 0x840F0316,
	CL_LHSL_BV_23	= 0x840F0317,
	CL_LHSL_BV_24	= 0x840F0318,
	CL_LHSL_BV_25	= 0x840F0319,
	CL_LHSL_BV_26	= 0x840F031A,
	CL_LHSL_BV_27	= 0x840F031B,
	CL_LHSL_BV_28	= 0x840F031C,
	//light xyl client
	CL_LXYL_BV_01 	= 0x840F0401,
	CL_LXYL_BV_02 	= 0x840F0402,
	CL_LXYL_BV_03 	= 0x840F0403,
	CL_LXYL_BV_04 	= 0x840F0404,
	CL_LXYL_BV_05 	= 0x840F0405,
	CL_LXYL_BV_06 	= 0x840F0406,
	CL_LXYL_BV_07 	= 0x840F0407,
	CL_LXYL_BV_08 	= 0x840F0408,
	CL_LXYL_BV_09 	= 0x840F0409,
	CL_LXYL_BV_10 	= 0x840F040A,
	CL_LXYL_BV_11 	= 0x840F040B,
	CL_LXYL_BV_12 	= 0x840F040C,
	CL_LXYL_BV_13 	= 0x840F040D,
	CL_LXYL_BV_14 	= 0x840F040E,
	//light LC client
	CL_LLC_BV_01	= 0x840F0501,
	CL_LLC_BV_02	= 0x840F0502,
	CL_LLC_BV_03	= 0x840F0503,
	CL_LLC_BV_04	= 0x840F0504,
	CL_LLC_BV_05	= 0x840F0505,
	CL_LLC_BV_06	= 0x840F0506,
	CL_LLC_BV_07	= 0x840F0507,
	CL_LLC_BV_08	= 0x840F0508,
	CL_LLC_BV_09	= 0x840F0509,
	CL_LLC_BV_10	= 0x840F050A,
	CL_LLC_BV_11	= 0x840F050B,
	CL_LLC_BV_12	= 0x840F050C,
	CL_LLC_BV_13	= 0x840F050D,
	CL_LLC_BV_14	= 0x840F050E,
	CL_LLC_BV_15	= 0x840F050F,
	CL_LLC_BV_16	= 0x840F0510,	
}TEST_CASE_CODE_ENUM;



typedef struct{
    u32 tc_id;
	union{
	    u8  sub_id;    
	    u8  para[12];
	};
} tc_info;

typedef struct{
    u8 reliable;
    u8 segment;
    u8 end_tscrpt_enable;
    u8 rcv_link_close;// 
} tc_proc_init;

typedef struct{     // need little endianness to big
	u8 nid  :7;
	u8 ivi  :1;
	u8 ttl  :7;
	u8 ctl  :1;
    u8 sno[3];
    u16 src;
    u16 dst;
    union{
        u8 aid_adr;
        struct{
        	u8 aid  :5;
        	u8 akf  :1;
            u8 md   :1;
            u8 seg  :1;
	    };
	};
    u8 ac[1];   // should not use size of mesh_cmd_tscript_head_t
}mesh_cmd_tscript_head_t;

#if (TESTCASE_FLAG_ENABLE&& (!__PROJECT_MESH_PRO__)&&(!HCI_LOG_FW_EN))
#define SET_TC_FIFO(cmd, pfifo, cmd_len)    tc_set_fifo(cmd, pfifo, cmd_len)
#define SET_RESULT_TESTCASE(reason, para)   tc_set_result(reason, para)
#else
#define SET_TC_FIFO(cmd, pfifo, cmd_len)
#define SET_RESULT_TESTCASE(reason, para)
#endif

u8 tc_set_fifo(u8 cmd,u8 *pfifo,u8 cmd_len);
void tc_set_result(u8 reason ,u8 para);
void mesh_rc_cmd_tscript(u8 *buff, int n);
void test_case_key_refresh_patch();

extern tc_info tc_par;
extern u8 tc_adv_type;
extern mesh_cmd_tscript_head_t mesh_cmd_tscript_head;
extern u8 tc_seg_buf[];
extern u8 iv_update_test_mode_en;
extern u8 iv_idx_update_change;
extern u8 iv_idx_update_change2next_st;
extern u8 netkey_list_test_mode_en;


